โอ๊ยยยย...อยากใช้งาน Docker แบบคนอื่นเขาบ้าง แต่ศัพท์เทคนิคเยอะแยะไปหมด มึนหมดแล้ววว 😖😰
.
Don't worry จ้าเพื่อน ๆ เพราะวันนี้แอดจะมารวบรวม 10 คำศัพท์เด็ด ๆ ที่ควรรู้ก่อนจะใช้งาน Docker ให้เพื่อน ๆ มือใหม่ได้ดูกัน หากอยากรู้แล้วว่ามีอะไรบ้าง ไปดูกันเลยยย !!
.
ก่อนจะไปเข้าเนื้อหากัน เรามารู้จักเจ้า Docker กันแบบคร่าว ๆ ก่อนเนอะ
.
ลองนึกภาพง่าย ๆ เมื่อก่อนหากเราอยากรัน Service อะไรสักอย่างนึง เราจะต้องจำลองสภาพแวดล้อมของเครื่อง โดยใช้ Virtual Machine เพื่อจำลองทั้ง OS ให้รองรับกับการรัน Service นั้น ๆ แต่เจ้า Docker มันทำได้ง่ายกว่านั้น เพราะมันจะใช้การจำลองสภาพแวดล้อมบน Server ไม่ต้องใช้พื้นที่และทรัพยากรเยอะเหมือน VM อีกต่อไป แถมยังมีขนาดเล็ก ติดตั้งได้รวดเร็ว รองรับทั้ง MacOS, Windows, และ Linux นั่นเอง !! เจ๋งสุด 👍
.
🔥 ไปดูกันเลยว่ามีศัพท์อะไรที่มือใหม่ควรรู้ก่อนใช้งาน Docker บ้าง…
.
.
📃 Docker Images
.
เป็นต้นแบบที่ใช้สร้าง Docker Containers ซึ่งจะเก็บการตั้งค่าของสภาพแวดล้อม และการ Config ค่าต่าง ๆ ที่จำเป็นสำหรับการรัน Service จะทำงานเมื่อมีการเรียกใช้ที่ Docker Containers
.
.
📃 Docker Containers
.
เปรียบเสมือนกล่องที่รวบรวมแอปพลิเคชัน ค่า Config และสภาพแวดล้อมที่จำเป็นต่อการทำงาน ที่สร้างจาก Docker Images
.
.
📃 Dockerfiles
.
เป็นเอกสารที่รวบรวมการใช้งานและคำสั่งทั้งหมด เพื่อใช้ในการสร้าง Docker Images
.
.
📃Docker Registry
.
คือบริการโฮสต์ที่ใช้เก็บ Images Repository ทำให้เราสามารถ Push หรือ Pull Repository ผ่านเครือข่ายได้ สามารถใช้งานผ่าน Docker Hub และ คำสั่ง docker search
.
.
📃 Docker Repository
.
เป็นที่เก็บชุดของ Docker images สามารถทำการ Push หรือ Pull ผ่าน Docker Registry ได้
.
.
📃 Volumes
.
ข้อมูลไดเร็กทอรี่ที่อยู่ภายใน Docker Containers ใช้เพื่อรักษาข้อมูลใน Containers มีทั้งหมด 3 ประเภท คือ
🔸 Host volume - เป็น volume ของ Docker Host สามารถเข้าถึงได้จาก Containers
🔸 Named volume - เป็น volume ที่ใช้จัดการตำแหน่งบนดิกส์แบบระบุชื่อ
🔸 Anonymous volume - คล้ายกับ Named volume แต่จะไม่มีการระบุชื่อ
.
.
📃 Docker Compose
.
เป็นคำสั่งที่ใช้ในการสร้างหลาย ๆ Containers ขึ้นมาในครั้งเดียว ซึ่งจะมีการเซ็ท Config และ Service ต่าง ๆ ไว้เรียบร้อยแล้วในไฟล์ docker-compose.yml โดยไม่ต้องมานั่ง Config ทีละอันให้เสียเวลานั่นเอง
.
.
📃 Docker Swarm
.
เป็นเครื่องมือที่ช่วยรัน Docker หลาย ๆ ตัวได้พร้อมกันในสภาพแวดล้อมเดียวกัน
.
.
📃 Swarm
.
เป็นกลุ่มของ Docker Engine ที่ทำงานใน Swarm Mode
.
.
📃 Swarm Mode
.
เป็นโหมดที่ใช้จัดการ Cluster Management และ Orchestration ที่อยู่ใน Docker Engine เมื่อเราสร้าง Swarm ใหม่ หรือรวมโหนดต่าง ๆ เข้ากับ Swarm เจ้า Docker Engine ก็จะทำงานอยู่ใน Swarm Mode นั่นเอง
.
.
และทั้งหมดนี้คือคำศัพท์พื้นฐานสำหรับมือใหม่หัดใช้ Docker หวังว่าจะเป็นประโยชน์กับเพื่อน ๆ นะ หากใครมีคำอื่น ๆ อยากจะเพิ่มเติม สามารถคอมเมนต์มาพูดคุยกันได้เลย ❤️
.
borntoDev - 🦖 สร้างการเรียนรู้ที่ดีสำหรับสายไอทีในทุกวัน
#Docker #VM #BorntoDev
「registry docker」的推薦目錄:
- 關於registry docker 在 BorntoDev Facebook 的最佳貼文
- 關於registry docker 在 矽谷牛的耕田筆記 Facebook 的最佳解答
- 關於registry docker 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
- 關於registry docker 在 docker-registry/Dockerfile at master - GitHub 的評價
- 關於registry docker 在 自動化上傳Docker Image 到GitHub Docker Registry - LearnKu 的評價
- 關於registry docker 在 Docker Registry – Index - Wilson Mar 的評價
- 關於registry docker 在 How to change the default docker registry from docker.io to my ... 的評價
- 關於registry docker 在 GitHub Container Registry: BETTER Than Docker Hub? 的評價
- 關於registry docker 在 用Drone 自動化上傳Docker Image 到GitHub Docker Registry 的評價
registry docker 在 矽谷牛的耕田筆記 Facebook 的最佳解答
ref: https://blog.sigstore.dev/verify-oci-container-image-signatures-in-kubernetes-33663a9ec7d8
本篇文章要探討的也是跟 security 有關的一個概念,一樣也是基於 Software Supple Chain 這個概念去探討到底環境中用到的相關軟體是否都是安全且被信任的。
本文章分享的是一個基於 Kubernetes Admission Controller 實作的解決方案 Connaisseur,該解決方案的概念很簡單
1. 透過 Admission Controller 去監聽系統上所有 Container 的部署請求
2. 如果部署的 Container Image 是符合事先設定規則的,則允予通過
3. 如果不符合,該次部署就直接失敗
所謂的規則比較簡易的說法就是簽章,只有包含了可信賴簽章的 Container Image 才會被 Connaisseur 給允許通過
有了這個基本概念之後,下一個問題則是到底什麼是可信賴簽章?以及要如何讓想要使用的 Container Image 獲得一個可信賴的簽章?
文章內介紹了關於 Container Signatures 的一些演變,包含了 Docker Content Trust, Notary(V1) 以及 The Update Framework 早期的使用方式
到後來因為 OCI(Open Container Initiative) 的發展與調整,目前可以直接於 OCI Image Spec 一同夾帶該 Image 相關的簽章。
這意味者任何支援該 OCI 標準的 Container Registry 不但可以存放該 Container Image 同時也可以存放該 Image 的簽章。
這個使用方式的變更也促使了 Notary 這個開源專案(v2)的演進。
與此同時, Linux 基金會底下的 Sigstore 專案也再努力地針對開源專案的簽章方面努力著,期望能夠透過簽署與驗證功能來提升開源專案簽署方面的應用。
Sigstore 專案底下的 Cosign 小專案則是專門處理 OCI Image 相關的簽章事項,包含簽署,儲存以及驗證。
而本文所開頭所提及的 Connaisseur 專案則是可以基於 Cosign 所簽署的內容去進行驗證,透過兩者的配合可以用來確保部署到 Kubernetes 的所有 Image 都需要被 Cosign 給簽署過
作者特別強調,目前 Sigsotre 以及 Cosign 這些專案都還是屬於開發階段,所以 Connaisseur 本身對於這項功能的整合也是屬於一個開發實驗階段,很多東西都會不穩定
隨者資安意識以及相關事件 Solarwinds hack 等的出現,當各團隊基本的 DevOps, CI/CD 文化與流程都逐漸成型後, DevSecOps 的東西就會是下一個各團隊要開始煩惱的地方了
特別是所謂的 Software Supply Chain 上的各種潛在危險。
registry docker 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
ref: https://sysdig.com/blog/dockerfile-best-practices/
如果你常用到容器化、微服務架構,這些輕量化的架構當碰到問題時,背後的資安事件調查、報告、修復卻是影響甚鉅。然而,這些影響都可以透過「把安全意識擺在開發階段 (shifting left security)」來降低風險,而這篇文章就會講述 Dockerfile 的最佳實作手段有哪一些。
首先,我們會從幾個大面向來說明各種控制安全風險的細節,像是權限控管、降低攻擊層面、預防機敏資料洩漏,以及在發布 container image 時的注意事項。而你需要特別注意的是,其實 Dockerfile 也只是算是開發階段的一部份,所以這邊能提醒到的內容都屬於部署前(特別是開發階段)的準備。以下共提及 20 個你可以注意的重點,但因為篇幅較長,筆者將選出較重要的幾個來談談。
讓我們從「權限控管」說起:
Rootless container
根據報告結果顯示,有超過 58% 的 image 都是用 root 作為執行服務的使用者,所以在此也會建議透過 USER 參數來設定容器的預設使用者,同時,也可以利用執行環境/架構的設定來避免容器的預設使用者是 root。
Make executables owned by root and not writable
服務的 binary file 應該避免被任何人修改,容器的預設使用者只需要執行服務的權限,而不是擁有權。
至於「減少攻擊面」的部分:
Multistage builds小
在 image 的建立,可以透過 multistage build 來建立很多層 container,例如在第一層安裝編譯所需的套件,而第二層則只需安裝 runtime 所需的套件(如 openssl 等),再複製第一層所編譯出來的執行檔就可以了。其餘的因開發/編譯所安裝的套件皆不需要放在最後的 image,這樣同時也可以把 image 的大小縮小。
Distroless & Truested image
採用最小/最輕量化的 base image 來作為你打造 image 的基礎,同時使用可信任來源的 image,避免不小心在未知的情況引入好幾個潛在的安全威脅。(在原文中,sysdig 也使用了自身開發的工具來檢測 image 是否有安全問題,如果有需要也能參考看看)
而再來關於「機敏資訊」的部分:
Copy
當你在從你的開發環境複製檔案到 image 當中時,需要非常小心,因為你很可能一不小心就把你的密碼、開發環境的 token、API key 等資訊複製進去了。而且不要以為把 container 裡面的檔案刪掉就沒事了,別忘了 container image 是一層一層堆疊起來的,就算刪掉了,還是能在前面的 layer 裡面找到。
但如果還是有需要用到這些機敏資料,也可以考慮使用環境變數(docker run -e 引入),或是 Docker secret、Kubernetes secret 也能夠幫你引入這些參數。如果是設定檔的話,則可以用 mount 的方式來掛載到你的 container 裡面。
總而言之,你的 image 裡面不該有任何機敏資料、設定檔,開發服務時讓服務在 runtime 的時候可以接受來自環境變數的參數才是相對安全的。
其他的部分:
其實文章當中還有提到很多製作 image 的注意事項,像是在 deployment 階段,可能你部署的 latest 與實際的 latest 因時間差而不同。又或是在 image 裡面加上 health check,也才能做到狀況監測。
在容器化服務的時代,開發者不僅需要具備撰寫開發程式的能力,也要對於虛擬化環境有足夠的理解,否則,在對架構不熟的情況就將服務部署上去,或把 image 推送到公開的 registry,都可能造成重要的資料外洩與潛在的資安危機。
registry docker 在 自動化上傳Docker Image 到GitHub Docker Registry - LearnKu 的推薦與評價
原文轉自: 『用Drone 自動化上傳Docker Image 到GitHub Docker Registry』 很高興收到GitHub 的Beta 邀請函來開始試用GitHub Package Registry 相關功能, ... ... <看更多>
registry docker 在 Docker Registry – Index - Wilson Mar 的推薦與評價
A registry of Docker images is crucial for Kubernetes because a Docker ... Selecting a container registry for your Docker environment can ... ... <看更多>
registry docker 在 docker-registry/Dockerfile at master - GitHub 的推薦與評價
# TO_BUILD: docker build -rm -t registry . # TO_RUN: docker run -p 5000:5000 registry. # Latest ... ... <看更多>